id: task-286 title: Add npm script and shell script for updating bun.nix via Docker status: Done assignee:
- '@myself' created_date: '2025-10-09 15:09' updated_date: '2025-10-09 15:09' labels:
- tooling
- nix
- ci dependencies: [] priority: medium
Description
Currently, bun.nix is regenerated via postinstall hook which can fail due to GitHub API rate limits (403 errors). Create a dedicated npm script and shell script to allow manual regeneration of bun.nix using bun2nix via Docker, avoiding GitHub API rate limit issues.
Acceptance Criteria
- [x] #1 Shell script created at scripts/update-nix.sh that runs bun2nix via Docker
- [x] #2 Script checks for Docker availability and provides helpful error messages
- [x] #3 npm script 'update-nix' added to package.json that executes the shell script
- [x] #4 Script successfully regenerates bun.nix without hitting GitHub API rate limits
Implementation Plan
- Create shell script at scripts/update-nix.sh
- Add Docker availability check with error handling
- Implement bun2nix execution via Docker with Nix flakes
- Add npm script in package.json to run the shell script
- Test script execution to verify it avoids GitHub API rate limits
Implementation Notes
Summary
Created a dedicated update script to regenerate bun.nix using Docker instead of relying on postinstall hooks, avoiding GitHub API rate limit issues (403 errors).
Changes
- scripts/update-nix.sh: New shell script that runs bun2nix via Docker container
- Uses nixos/nix:latest Docker image to run bun2nix
- Checks for Docker availability before execution
- Provides clear error messages and success feedback
- package.json: Added
update-nixscript for easy invocation
Technical Details
- Script uses Docker volume mounting to access project files
- Runs bun2nix with Nix experimental features enabled
- Avoids GitHub API calls by using local package data via Docker
Testing
Verified that running bun run update-nix successfully regenerates bun.nix without hitting GitHub API rate limits, even when switching networks (e.g., to mobile hotspot).